In computing, different kinds of performance tests are done to assess computing system performance in various circumstances. System performance characteristics such as responsiveness, reliability, scalability, and resource usage, among others, can be investigated or verified under a particular workload pattern. For example, load testing can investigate a computing system's behavior under a specific work load, such as a specified number of concurrent users of an application who perform a specific number of transactions within a specified time period. Stress testing can investigate the upper limits of system capacity under extreme loads to help developers or administrators determine the system's breaking point. Endurance testing can investigate the system's ability to operate continuously for long periods under normal loads, by detecting slow leaks in memory usage and other performance degradation. Spike testing can investigate the system's ability to properly handle sudden increases in load, such as spikes generated by sudden demands from a very large number of users. Configuration tests can investigate the performance impact of configuration changes to the system's components, such as changing system configuration by swapping storage subsystems, adding threads, or adding machines to a cluster or to a cloud-based architecture.